package com.example.llh.weather_llh_21;


import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;

/**
 * 天气预报列表适配器：管理RecyclerView中天气数据的展示
 */
public class ForecastAdapter extends RecyclerView.Adapter<ForecastAdapter.ViewHolder> {

    // 数据源：包含多日天气预报信息的列表
    private List<WeatherResponse.Forecast> forecastList;

    /**
     * 构造方法初始化数据源
     * @param forecastList 天气预报数据集合
     */
    public ForecastAdapter(List<WeatherResponse.Forecast> forecastList) {
        this.forecastList = forecastList;
    }

    /**
     * 创建视图持有者时调用
     * @param parent 父容器视图组
     * @param viewType 视图类型（本适配器未使用多类型视图）
     * @return 绑定数据的新视图持有者
     */
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // 加载列表项布局文件
        View view = LayoutInflater.from(parent.getContext())
                                  .inflate(R.layout.list_item_forecast, parent, false);
        return new ViewHolder(view);
    }


    /**
     * 绑定数据到指定位置的列表项视图
     * @param holder 视图持有者对象
     * @param position 当前数据项的位置
     */
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        WeatherResponse.Forecast forecast = forecastList.get(position);
        // 设置日期显示（示例值：2025-05-11）
        holder.tvDate.setText(forecast.getYmd());
        // 设置天气类型（示例值：晴/多云）
        holder.tvWeatherType.setText(forecast.getType());
        // 拼接温度范围（示例值：20℃ ~ 28℃）
        holder.tvTemperatureRange.setText(forecast.getLow() + " ~ " + forecast.getHigh());
    }

    /**
     * 获取数据项总数
     * @return 天气预报天数
     */
    @Override
    public int getItemCount() {
        return forecastList.size();
    }


    /**
     * 视图持有者内部类：缓存列表项视图组件
     */
    static class ViewHolder extends RecyclerView.ViewHolder {
        TextView tvDate, tvWeatherType, tvTemperatureRange;

        /**
         * 构造方法绑定视图组件
         * @param itemView 列表项根视图
         */
        ViewHolder(View itemView) {
            super(itemView);
            tvDate = itemView.findViewById(R.id.tvDate);
            tvWeatherType = itemView.findViewById(R.id.tvWeatherType);
            tvTemperatureRange = itemView.findViewById(R.id.tvTemperatureRange);
        }
    }
}